iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
1
自我挑戰組

程式設計師大冒險系列 第 17

[17/150]刷題是需要手感10908 - Largest Square

  • 分享至 

  • xImage
  •  

前二天都在翻譯題目,沒有在刷題,今天刷起來特別沒手感。古人云:「三日不讀書,面目可憎」,三日不刷題,手感可生。

10908 - Largest Square


程式碼

還在修改,輸出有錯誤。但是抓不到邏輯bug。

import sys 
#測試系統開關
def test():
    return 0#打開?1;0

讀取測資

    
def inp():
    global grid
    #總題數讀取
    testcase=int(sys.stdin.readline())    
    for i in range(testcase):
        sinp=sys.stdin.readline().replace("\n","")
        hri,wei,que=map(int,sinp.split())
        #長、寬、總小題數
        print(hri,wei,que)
        #grid
        grid=[]
        #讀取文章內容
        for j in range(hri):
            sinp=sys.stdin.readline().replace("\n","")
            grid.append(sinp)
            if(test()):print(sinp)
        if(test()):print(grid)
        #question
        for k in range(que):
            sinp=sys.stdin.readline().replace("\n","")
            x,y=map(int,sinp.split())
            if(test()):print(sinp)
            print(1+(handli(x,y,hri,wei)-1)*2)

主程式

def handli(x,y,h,w):
    global grid
    larsqu=1
    center=grid[x][y]
    if(test()):print(center)
    #從中心點往外延伸最小值,確保之後取值不超出範圍
    lar=min(minlar(x,h-1),minlar(y,w-1))
    print(center,lar,end=" ")
    #確認上下左右字元,是否符合中心點
    for i in range(lar):
        if(grid[x+i][y]!=center):
            return i
        if(grid[x-i][y]!=center):
            return i
        if(grid[x][y+i]!=center):
            return i
        if(grid[x][y-i]!=center):
            return i
    return lar+1

輔助程式

def minlar(xy,hw):
    lar=min(xy,hw-xy)
    return lar
        
inp()

總結

程式虐我千萬遍,我待程式如初戀。
感謝撥冗閱讀


上一篇
[16/150]英文不好刷題技巧、10221 - Satellites、10642 - Can You Solve It?
下一篇
[18/150]測試系統應用(Python)10221 - Satellites
系列文
程式設計師大冒險115
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言